﻿#ifndef HANDMEASUREFUNCTION_H
#define HANDMEASUREFUNCTION_H

#include "Renderer.h"
#include "Eigen/Dense"
#include "OpenCLManager.h"
#include "opencv2/opencv.hpp"
#include "Particle_Const.h"
#include "OpenCLGL_Util.h"
#include <stdint.h>
#include <vector>

class HandMeasureFunction
{
	public:

		HandModelRenderer* renderer;
		OpenCLManager * oclManager;
		std::vector<HypothesisX> hypoArrays;

		HandMeasureFunction(HandModelRenderer* renderer,OpenCLManager* ocl);
		~HandMeasureFunction(void);

		void generateObserve(HypothesisX hypo);
		void psoVerifying(std::vector<double> &measureResult);
		void psoFunction(std::vector<double> &measureResult);
		double getE_Vector(double D_Results, double * hypos);
		double getResultAt(int index);
};

#endif